try again

Andrew Cantino 9 years ago
parent
commit
8781fd16b5
5 changed files with 16 additions and 12 deletions
  1. 5 5
      Gemfile
  2. 2 2
      Procfile
  3. 3 3
      bin/setup_heroku
  4. 3 0
      deployment/heroku/Procfile.heroku
  5. 3 2
      deployment/heroku/unicorn.rb

+ 5 - 5
Gemfile

@@ -100,13 +100,13 @@ group :production do
100 100
   gem 'rack'
101 101
 end
102 102
 
103
-# This hack needs some explanation.  When on Heroku in production, use the pg, unicorn, and rails12factor gems.
103
+# This hack needs some explanation.  When on Heroku, use the pg, unicorn, and rails12factor gems.
104 104
 # When not on Heroku, we still want our Gemfile.lock to include these gems, so we scope them to
105 105
 # an unsupported platform.
106
-if ENV['ON_HEROKU'] || ENV['HEROKU_POSTGRESQL_ROSE_URL']
107
-  gem 'pg', group: :production
108
-  gem 'unicorn', group: :production
109
-  gem 'rails_12factor', group: :production
106
+if ENV['ON_HEROKU'] || ENV['HEROKU_POSTGRESQL_ROSE_URL'] || File.read(File.join(File.dirname(__FILE__), 'Procfile')) =~ /intended for Heroku/
107
+  gem 'pg'
108
+  gem 'unicorn'
109
+  gem 'rails_12factor'
110 110
 else
111 111
   gem 'pg', platform: :ruby_18
112 112
   gem 'unicorn', platform: :ruby_18

+ 2 - 2
Procfile

@@ -6,8 +6,8 @@ jobs: bundle exec rails runner bin/threaded.rb
6 6
 # web: bundle exec unicorn -c config/unicorn/production.rb
7 7
 # jobs: bundle exec rails runner bin/threaded.rb
8 8
 
9
-# Old version with seperate processes for each component (use this if you have issues with the threaded version)
9
+# Old version with separate processes (use this if you have issues with the threaded version)
10 10
 # web: bundle exec rails server
11 11
 # schedule: bundle exec rails runner bin/schedule.rb
12 12
 # twitter: bundle exec rails runner bin/twitter_stream.rb
13
-# dj: bundle exec script/delayed_job run
13
+# dj: bundle exec script/delayed_job run

+ 3 - 3
bin/setup_heroku

@@ -45,7 +45,7 @@ def grab_heroku_config!
45 45
 end
46 46
 
47 47
 def set_value(key, value, options = {})
48
-  unless $config[key] == value
48
+  if $config[key].nil? || $config[key] == '' || ($config[key] != value && options[:force] != false)
49 49
     puts "Setting #{key} to #{value}" unless options[:silent]
50 50
     puts capture("heroku config:set #{key}=#{value}")
51 51
   end
@@ -94,10 +94,10 @@ unless $config['APP_SECRET_TOKEN']
94 94
 end
95 95
 
96 96
 set_value 'BUILDPACK_URL', "https://github.com/ddollar/heroku-buildpack-multi.git"
97
-set_value 'PROCFILE_PATH', "deployment/heroku/Procfile.heroku"
97
+set_value 'PROCFILE_PATH', "deployment/heroku/Procfile.heroku", force: false
98 98
 set_value 'ON_HEROKU', "true"
99 99
 set_value 'FORCE_SSL', "true"
100
-set_value 'DOMAIN', "#{app_name}.herokuapp.com"
100
+set_value 'DOMAIN', "#{app_name}.herokuapp.com", force: false
101 101
 
102 102
 unless $config['INVITATION_CODE']
103 103
   puts "You need to set an invitation code for your Huginn instance.  If you plan to share this instance, you will"

+ 3 - 0
deployment/heroku/Procfile.heroku

@@ -1 +1,4 @@
1
+# This Procfile is intended for Heroku, and is detected by the Gemfile.  DO NOT REMOVE THIS LINE!
2
+
3
+# deployment/heroku/unicorn.rb is a special Unicorn config file that also spawns workers.
1 4
 web: bundle exec unicorn -p $PORT -c ./deployment/heroku/unicorn.rb

+ 3 - 2
deployment/heroku/unicorn.rb

@@ -5,7 +5,8 @@ timeout 15
5 5
 preload_app true
6 6
 
7 7
 # Note that this will only work correctly when running Heroku with ONE web worker.
8
-# If you want to run more than one, use the standard Huginn Procfile instead with separate web and job entries.
8
+# If you want to run more than one, use the standard Huginn Procfile instead, with separate web and job entries.
9
+# You'll need to set the Heroku config variable PROCFILE_PATH to 'Procfile'.
9 10
 Thread.new do
10 11
   worker_pid = nil
11 12
   while true
@@ -14,7 +15,7 @@ Thread.new do
14 15
       puts "New threaded worker PID: #{worker_pid}"
15 16
     end
16 17
 
17
-    sleep 30
18
+    sleep 45
18 19
 
19 20
     if ENV['DOMAIN']
20 21
       force_ssl = ENV['FORCE_SSL'].present? && ENV['FORCE_SSL'] == 'true'